package objekte;

public class Mensch extends Person {
  private Mensch vater;
  private Mensch mutter;
  private Mensch[] kinder;
  private int kinderanz;
  
  
  public Mensch(String v, boolean bub, Mensch papa, Mensch mama){
    super(v, papa.name, bub);
    vater=papa;
    mutter=mama;
    kinder=new Mensch[10];
    kinderanz=0;
    papa.kinder[papa.kinderanz++]=this;
    mama.kinder[mama.kinderanz++]=this;
  }
  
  public Mensch(String vorname, String name, boolean bub) {
    super(vorname, name, bub);
    kinder=new Mensch[10];
    kinderanz=0;
  }
  
  public int kinderanz(){return kinderanz;}
  
  public boolean istGeschwister(Mensch m) {
    return this.vater==m.vater || this.mutter==m.mutter;
  }
  
  public Mensch[] alleGeschwister() {
    Mensch[] geschwister=new Mensch[20];
    int i;
    for(i=0; i<mutter.kinderanz; ++i)
      geschwister[i]=mutter.kinder[i];
    for(int j=0; j<vater.kinderanz; ++j){
      boolean doppel=false;
      for(int k=0; k<mutter.kinderanz; ++k)
        if(mutter.kinder[k]==vater.kinder[j]) doppel=true;
      if(!doppel) geschwister[i++]=vater.kinder[j];
    }
    Mensch[] ret=new Mensch[i];
    for(--i; i>=0; --i) ret[i]=geschwister[i];
    return ret;
  }
  
  public static void main(String[] args) {
    Mensch adam=new Mensch("Adam", "Lehm", true);
    Mensch eva=new Mensch("Eva", "Rippe", false);
    if(adam.heirate(eva))
      System.out.println("Adam heiratet Eva.");
    
    Mensch k=new Mensch("Kain", true, adam, eva);
    Mensch a=new Mensch("Abel", true, adam, eva);
    
    if(k.istGeschwister(a))
      System.out.println(k+" "+a+" sind Geschwister.");
    
    Mensch[] ms=k.alleGeschwister();
    Person.ausgabe(ms);
  }
}
